package com.sxu.immutableDemo;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * Map的ofEntry方法
 */
public class Demo2 {
    public static void main(String[] args) {
        // 1. 创建一个普通的Map集合
        HashMap<String,String> hm = new HashMap<>();
        hm.put("赵","111");
        hm.put("钱","222");
        hm.put("孙","333");
        hm.put("李","444");
        hm.put("周","555");
        hm.put("吴","666");
        hm.put("郑","777");
        hm.put("王","888");
        hm.put("冯","999");
        hm.put("陈","000");
        hm.put("褚","11");
        // 2. 利用上面的数据床技安一个不可变集合

        // 获取到所有的键值对对象
        //Set<Map.Entry<String,String>> entries = hm.entrySet();
        // 把entries变成一个数组
        /*
        * toArray方法在底层会比较集合的长度和数组的长度
        *   如果集合长度 > 数组长度 数组放不下 就会根据实际的个数，重新创建数组
        *   如果集合长度 < 数组长度 数组能放下 就不会创建新的数组，而是直接用
        * */
        //Map.Entry[] arr = entries.toArray(new Map.Entry[0]);
        // 调用ofEntries
        //Map map = Map.ofEntries(arr);

        // 3. 简化
        Map<Object,Object> map = Map.ofEntries(hm.entrySet().toArray(new Map.Entry[0]));

        // 使用copyOf
        Map<Object,Object> map2 = Map.copyOf(hm);
    }
}
